import VueRouter from 'vue-router';
import Vue from 'vue';
Vue.use(VueRouter);

// 二次封装push、replace：
//#region 
const OriginPush = VueRouter.prototype.push;         // 获取原始push方法
const OriginReplace = VueRouter.prototype.replace;   // 获取原始replace方法
// 开始二次封装：
// 给原型对象上的push指定新函数函数
VueRouter.prototype.push = function (location, onComplete, onAbort) {
    // 判断如果没有指定回调函数, 通过call调用源函数并使用catch来处理错误
    if (onComplete === undefined && onAbort === undefined) {
        return OriginPush.call(this, location, onComplete, onAbort).catch(() => { })
    } else { // 如果有指定任意回调函数, 通过call调用源push函数处理
        OriginPush.call(this, location, onComplete, onAbort)
    }
}
VueRouter.prototype.replace = function (location, onComplete, onAbort) {
    if (onComplete === undefined && onAbort === undefined) {
        return OriginReplace.call(this, location, onComplete, onAbort).catch(() => { })
    } else {
        OriginReplace.call(this, location, onComplete, onAbort)
    }
}
//#endregion

// 导入组件
// import Home from '../pages/Home/Home.vue';
// import Login from '../pages/Login';
// import Register from '../pages/Register';
// import Search from '../pages/Search';
// import Detail from '../pages/Detail'

// 导入封装的路由
import routes from './routes';

const router = new VueRouter({
    mode: "history",
    // 路由封装
    //#region 
    // routes: [
    //     {
    //         name: "home",
    //         path: '/home',
    //         component: Home,
    //         meta: {
    //             isShowFooter: true,  // 是否隐藏底部Footer组件
    //             isShowCategoryList: true // 是否显示三级菜单
    //         }
    //     },
    //     {
    //         path: '/',
    //         redirect: '/home',   // 重定向,参数是一个路由地址
    //     },
    //     {
    //         name: 'login',
    //         path: '/login',
    //         component: Login,
    //         meta: {
    //             isShowFooter: false  // 是否隐藏底部Footer组件
    //         }
    //     },
    //     {
    //         name: "register",
    //         path: '/register',
    //         component: Register,
    //         meta: {
    //             isShowFooter: false  // 是否隐藏底部Footer组件
    //         }
    //     },
    //     {
    //         name: 'search',
    //         path: '/search/:keyword?', // ?代表
    //         component: Search,
    //         meta: {
    //             isShowFooter: true,  // 是否隐藏底部Footer组件
    //             isShowCategoryList: false // 是否显示三级菜单
    //         }
    //     },
    //     // detail路由
    //     {
    //         name: 'detail',
    //         path: '/detail/:id', // ?代表
    //         component: Detail // 组件
    //     }
    // ]
    //#endregion
    routes,
    // 路由跳转时滚轮位置的设置
    scrollBehavior(to, from, savedPosition) {
        if (savedPosition) {
            return savedPosition
        } else {
            return { x: 0, y: 0 }
        }
    }
});


// 导出路由
export default router;